#ifndef BASE_H
#define BASE_H

#include <iostream>

class Base {
public:
    Base() {
        std::cout << "struct Base\t" << this << std::endl;
    }
    Base(const Base &base) {
        std::cout << "copy struct Base\t" << this << std::endl;
    }

    Base(Base &&base) {
        std::cout << "move struct Base\t" << this << std::endl;
    }

    ~Base() {
        std::cout << "destruct Base\t" << this << std::endl;
    }

    virtual void virFunc() {
        std::cout << "Base virFunc\t" << std::endl;
    }
};

#endif